package com.ruoyi.common.utils.bean;

import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Validator;

/**
 * 该类提供了使用Java Bean验证API验证bean对象属性的实用方法。
 *
 * 主要方法validateWithException接受一个Validator、要验证的对象以及可选的验证组。
 * 它执行验证，如果发现任何违反约束，则抛出ConstraintViolationException。
 *
 * 作者：ruoyi
 */
public class BeanValidators {

    /**
     * 使用提供的Validator和可选的验证组验证指定对象的属性。
     * 如果发现任何违反约束，则抛出ConstraintViolationException。
     *
     * @param validator 用于验证的Validator实例。
     * @param object 要验证的对象。
     * @param groups 可选的在验证期间应用的验证组。
     * @throws ConstraintViolationException 如果在验证期间发现任何约束违规。
     */
    public static void validateWithException(Validator validator, Object object, Class<?>... groups)
            throws ConstraintViolationException {
        // 使用提供的Validator和可选的验证组执行验证
        Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);

        // 如果存在约束违规，则抛出ConstraintViolationException
        if (!constraintViolations.isEmpty()) {
            throw new ConstraintViolationException(constraintViolations);
        }
    }
}